Ana içeriğe geç

ERC20 Transferi Alma

ERC20 Ethereum ağında jeton yayınlamayı denetlemek ve mümkünleştirmek için geliştirilmiş bir kurallar ve standartlar protokolüdür. Bu protokoldeki jeton transferlerini almak için Covalent Api uygun girdiler ile kullanılabilmektedir.

  import requests 

Tablo 65

Tablo 65'de verildiği üzere diğer fonksiyonlarda olduğu gibi ilk olarak "requests" kütüphanesi daha önce eklenmediyse eklenmelidir. Bu kütüphane ile oluşturulan URL'ler sorgulanmaktadır. Öncesinde kütüphane import metodu ile eklendiyse yeniden eklenmesine gerek yoktur.

  def ERC20TransferleriniAl(ApiAnahtarı, Zincir\_Numarası,Adres, ,KontrolAdresi ,Fiat): 

Tablo 66

Tablo 66'da görüldüğü üzere fonksiyonu tanımlarken ERC20TransferleriAl ismi verilmesi tercih edilmiştir. Bu fonksiyon Python dili içerisindeki fonksiyon tanıtma metodu olan "def" ile tanımlanmaktadır. Fonksiyon girdi parametrelerine bakıldığında benzer bir yapı ile karşılaşılsa da yeni parametreler bulunmaktadır. Bu parametrelere sırasıyla bakılacak olunursa:

  • ApiAnahtarı: Kayıt yapılırken kişiye özel verilen ücretsiz anahtardır. İşlemleri yaparken bu anahtar kullanılarak sorgu yapılmaktadır.
  • Zincir_Numarası: Transferlerin hangi zincir üzerinden alındığını ifade etmektedir. Bu numara Covalent tarafından önceden belirlenen numaralar olmaktadır. Ancak bu zincir numarası seçilirken ERC20 ağını destekleyen ağlar tercih edilmelidir yoksa hata ile karşılaşılmaktadır.
  • Adres: Jeton transferinin yapıldığı adresi belirtmektedir. Bu adres bir sonraki parametre olan KontratAdresine bağlantılı olarak seçilmelidir.
  • KontratAdresi: Jeton transferinin yapıldığı akıllı kontratı temsil etmektedir. Birden fazla adres için ortak olabilse de her transferin tek kontratı olmaktadır. Her kontrata özel adresler belirlenmektedir.
  • Fiat: Transferi yapılan jetonların sorgu doğrultusunda veriye çevrilirken hangi kur üzerinden çevrilmesinin istendiğini belirtmektedir. TRY ve ETH gibi birimler kullanılabilmektedir.
  URL = "https://api.covalenthq.com" + "/v1/" + Zincir\_Numarası + "/address/" + Adres + "/transfers\_v2/" +"?contract-address=" + KontrolAdresi +"&quote-currency=" + Fiat + "&key=" + ApiAnahtarı 

Tablo 67

Tablo 67'de ise sorgusu yapılacak URL yapısı string toplama işlemi ile oluşturulmaktadır. Bu URL yapısı fonksiyon girdisi olarak alınan parametreler içine yerleştirildikten sonra hazır hale gelmektedir. Hazır hale gelirken bazı sabit uzantılar da bulunmaktadır. Seçilen parametreler bu sabitlerin içerisine yerleştirilir. Parametrelere sırası ile bakılacak olunursa ilk olarak zincir numarası eklenir. Devamında işlem adresi, kontrat adresi ve Fiat parametresi eklenir. Son olarak da ApiAnahtarı eklenerek URL tamamlanmış hal alır.

  istek = requests.get(URL) hamverim = (istek.json()) 

Tablo 68

Tablo 68'de görüldüğü üzere kodun başında eklenen "requests" kütüphanesi sıradaki kod satırında "get" metodunu çağırmak için kullanılır. Metot ile öncesinde oluşturulan URL yapısı sorgulanır ve "istek" değişkenine kaydedilir. Alt satırında ise kaydedilen bu istek kod içerisinde anlamlandırılması için ".json()" metodu ile json formatına çevrilir ve hamverim değişkenine kaydedilir. Veri ham olarak alınsa da anlamlandırılmak için uygun anahtar işlemlerine ihtiyaç duymaktadır.

  verim = hamverim["data"] 

Tablo 69

Ham olarak alınan veri Tablo 69'da "data" anahtarına erişilerek bu veri kullanılacak veri olarak kaydedilir. Bu durumun nedeni sorgulanan URL sayesinde alınan verinin içerisinde sorgunun başarı duruma göre değer döndürmesidir. Ancak şu anlık bu önemli olmamaktadır. Bu nedenle görmezden gelinilebilir.

  Adresim = verim["address"] SonGüncelleme = verim["updated\_at"] BirSonrakiGüncelleme = verim["next\_update\_at"] ParaBirimi = verim["quote\_currency"] ZincirId = verim["chain\_id"] 

Tablo 70

Tablo 70'de görüldüğü üzere kaydedilen "verim" değişkeni çıktıyı json formatında hazırlamıştır. Bu json formatı içerisinden uygun anahtarların kullanılıp uygun parçalarına erişilerek bunların değişken olarak kaydedilmesi gerekmektedir. Bunlar arasında bazı veriler sorgulanan adres için ortak olmaktadır. Bu değişkenlere yakından bakılması gerekirse:

  • Adresim: Transferlerin alındığı adresi ifade etmektedir. Kontrat adresine uygun olarak oluşturulmuş olup tüm verilerin bağlandığı değişkendir. Verim içerisinden "address" anahtarı ile erişilmektedir.
  • SonGüncelleme: Jeton transferlerinin yapıldığı adres üzerinde yapılan son güncellemeyi belirtmektedir. Verim içerisinden "updated_at" anahtarı ile erişilmektedir.
  • BirSonrakiGüncelleme: Jeton transferlerinin yapıldığı adres üzerinde gerçekleşmesi planlanan bir sonraki güncellemeyi ifade etmektedir. Verim içerisinden "next_update_at" anahtarı ile erişilmektedir.
  • ParaBirimi: Jeton transferlerinin yapıldığı adres üzerindeki fiyatların çevrileceği parametre olarak seçilmiş para birimini ifade etmektedir. Verim içerisinden "quote_currency" anahtarı ile erişilmektedir.
  • ZincirId: Jeton transferlerinin yapıldığı adresin hangi zincir üzerinde olduğunu belirtmektedir. Bu değer Covalent tarafından kullanılan zincirlere verilen numara şeklinde çıktı verir. Verim içerisinden "chain_id" ile erişilmektedir.
  items = verim["items"] 

Tablo 71

Şu ana kadar alınan veriler tüm jeton transferleri için ortak olmaktaydı. Ancak Tablo 71'de "items" anahtarı ile eriştiğimiz veri liste halinde olmakta ve transfer başına farklılık gösteren içeriği ifade etmektedir. Bu veri "items" adında bir değişkene kaydedilir ve for döngüsü içerisinde döndürülmeye hazır hale gelmektedir.

  liste = [] liste.append("Adresim: " + Adresim) liste.append("Son Güncelleme: " + SonGüncelleme) liste.append("Bir sonraki Güncelleme: " + BirSonrakiGüncelleme) liste.append("Para Birimi: " + ParaBirimi) liste.append("Zincir Id: " + str(ZincirId)) 

Tablo 72

Tablo 72'de uygun anahtar ile erişilerek kaydedilen değişkenler boş liste oluşturularak içerisine kaydedilmektedir. Kaydedilme işlemleri gerçekleşirken değişkenlerin başına uygun başlık getirilir ve string toplama ile eklenir. String toplama işleminin gerçekleşebilmesi için toplanan iki verinin de string formatında olması gerekmektedir. Bu nedenle ZincirId gibi farklı formatta olan değişkenler toplanarak eklenmeden önce "srt()" fonksiyonu ile string haline çevrilir.

  index = 1 for item in items: 

Tablo 73

Tablo 73'de "for" döngüsü ile karşılaşılmaktadır. Bu döngü içerisine girilmeden önce index adında bir döngü değişkeni tanımlanır. Bu değişken döngü içerisinde aynı başlık ile kaydedilen içeriğin birbirinden ayrılmasını sağlayan sıra numarasıdır. Bir alt satırında ise for döngüsünde "items" olarak kaydettiğimiz liste, içerisindeki her bir değeri "item" olarak adlandırıp uygun işlemlerin yapılmasını sağlamaktadır. Bu satırdan sonra yazılan tüm kodlar for döngüsü içerisinde yerini almaktadır.

  BlokİmzalanmaTarihi = ["Index Numarası: " + str(index), "Blok İmzalanma Tarihi: " + item["block\_signed\_at"]]
BlokUzunluğu = ["Index Numarası: " + str(index), "Blok Uzunluğu: " + str(item["block\_height"])]
İşlemHashı = ["Index Numarası: " + str(index), "İşlem Hash'ı: " + item["tx\_hash"]]
İşlemBedeli = ["Index Numarası: " + str(index), "İşlem Bedeli: " + str(item["tx\_offset"])]
İşlemBaşarılıMı = ["Index Numarası: " + str(index), "İşlem Başarılı Mı: " + str(item["successful"])]
GönderilenAdres = ["Index Numarası: " + str(index), "Gönderilen Adres: " + item["from\_address"]]
GönderildiğiAdres = ["Index Numarası: " + str(index), "Gönderildiği Adres: " + item["to\_address"]]
Değer = ["Index Numarası: " + str(index), "Değer: " + str(item["value"])]
ÖnerilenGas = ["Index Numarası: " + str(index), "Önerilen Gas: " + str(item["gas\_offered"])]
HarcananGas = ["Index Numarası: " + str(index), "Harcanan Gas: " + str(item["gas\_spent"])]
GazFiyatı = ["Index Numarası: " + str(index), "Gas Fiyatı: " + str(item["gas\_price"])]

Tablo 74

Tablo 74'de görüldüğü üzere döngü içerisine girildikten sonra item içerisindeki anahtarlara sıra ile erişilmektedir. Bu işlem, işlemleri al fonksiyonları ile benzerlik gösterse de ilerde tam olarak farklılığın ortaya çıkacağı bölümler bulunmaktadır. Değişkenler kaydedilirken iki elementten oluşan bir liste oluşturulmaktadır. Bu liste içerisinde ilk olarak tüm değişkenlerde string toplama ile önceden oluşturulmuş olan index değeri ile verinin sırası belirtilir. İkinci elementte ise bu verinin anahtar ile erişilen bölümü ile uygun başlığın string toplama işlemi ile birbirine eklenmesi ile karşılaşılmaktadır. Bu anahtar ve veri içeriklerine yakından bakılması gerekirse:

  • BlokİmzalanmaTarihi: İşlemin gerçekleştiği bloğun ne zaman madenciler tarafından imzalandığını ve zincire eklendiğini belirtmektedir. İtem içerisinden "block_signed_at" anahtarı ile erişilebilmektedir.
  • BlokUzunluğu: İşlemin gerçekleştiği bloğun blok zinciri içerisinde hangi sıra ile zincire eklendiğini belirtmektedir. İtem içerisinden "BlokUzunluğu" anahtarı ile erişilebilmektedir.
  • İşlemHashı: İşlemin gerçekleştiği blok zincir bloğunun zincire eklenirken ki hash'ini ifade etmektedir. İtem içerisinden "tx_hash" anahtarı ile erişilebilmektedir.
  • İşlemBedeli: İşlemin gerçekleşirken ki ücretini belirtmektedir. İtem içerisinden "tx_offset" anahtarı ile erişilebilmektedir.
  • İşlemBaşarılıMı: İşlemin başarılı olup olmadığını boolean veri tipi ile çıktı vermektedir. İşlem başarılı bir şekilde gerçekleştiyse "true" çıktısı verirken başarısızsa "false" çıktısını verir. İtem içerisinden "successful" anahtarı ile erişilebilmektedir.
  • GönderilenAdres: İşlemler dahilinde miktarın karşı tarafa gönderildiği adresi belirtmektedir. Bu adres zincirler arası farklılık göstermektedir. İtem içerisinden "from_address" anahtarı ile erişilebilmektedir.
  • GönderildiğiAdres: İşlemlerin dahilinde miktarın gönderildiği karşı tarafın adresini belirtmektedir. Miktar GönderilenAdres değişkeninden GönderildiğiAdres'e aktarılmış olmaktadır. İtem içerisinden "to_address" anahtarı ile erişilmektedir.
  • Değer: Gerçekleşen transfer işleminde transfer edilen miktarın değerini ifade etmektedir. Fiat ile çevrilmemiştir kontrat birimine sahip olmaktadır. İtem içerisinden "value" anahtarı ile erişilmektedir.
  • ÖnerilenGas: Gerçekleşen transferin gerçekleşebilmesi için öncesinde teklif edilmiş Gas miktarını ifade etmektedir. Bu miktar kesin olarak harcanan miktar olamamak ile beraber fazla veya az sonuçlar verebilmektedir. İtem içerisinden "gas_offered" değişkeni ile erişilmektedir.
  • HarcananGas: Gerçekleşen transfer işleminin gerçekleşmesi için harcanan Gas miktarını ifade etmektedir. Birimi kontrattaki Gas birimidir. ÖnerilenGas miktarından farklılık gösterebilmektedir. İtem içerisinden "gas_spent" anahatarı ile erişilmektedir.
  • GazFiyatı: Gerçekleşen transfer işleminin gerçekleşmesi için harcanan Gas miktarını parametre olarak seçilen Fiat'a yani kur birimine göre çevrilmiş halidir. İtem "gas_price" anahtarı ile erişilmektedir.
  liste.append(BlokİmzalanmaTarihi) liste.append(BlokUzunluğu) liste.append(İşlemHashı) liste.append(İşlemBedeli) liste.append(İşlemBaşarılıMı) liste.append(GönderilenAdres) liste.append(GönderildiğiAdres) liste.append(Değer) liste.append(ÖnerilenGas) liste.append(HarcananGas) liste.append(GazFiyatı) 

Tablo 75

Tablo 75'de ise uygun başlığa ve index numarasına sahip bu veriler ".append" fonksiyonu ile liste içerisine sıra ile eklenir.

  TransferBlokİmzalanmaTarihi = ["Index Numarası: " + str(index), "Transfer Blok İmzalanma Tarihi: " + str(item["transfers"][0]["block\_signed\_at"])]
TransferİşlemHashı = ["Index Numarası: " + str(index), "Transfer İşlem Hash'ı: " + str(item["transfers"][0]["tx\_hash"])]
TransferGönderilenAdres = ["Index Numarası: " + str(index), "Transfer Gönderilen Adres: " + str(item["transfers"][0]["from\_address"])]
TransferAlınanAdres = ["Index Numarası: " + str(index), "Transfer Alınan Adres: " + str(item["transfers"][0]["to\_address"])]
TransferKontratıBasamakSayısı = ["Index Numarası: " + str(index),"Transfer Kontratı Basamak Sayısı: " + str(item["transfers"][0]["contract\_decimals"])]
TransferKontratAdı = ["Index Numarası: " + str(index),"Transfer Kontratı Adı: " + str(item["transfers"][0]["contract\_name"])]
TransferKontratSembolü = ["Index Numarası: " + str(index),"Transfer Kontrat Sembolü: " + str(item["transfers"][0]["contract\_ticker\_symbol"])]
TransferLogoUrl = ["Index Numarası: " + str(index),"Transfer Logo Url: " + str(item["transfers"][0]["logo\_url"])]
TransferTipi = ["Index Numarası: " + str(index),"Transfer Tipi: " + str(item["transfers"][0]["transfer\_type"])]
TransferDelta = ["Index Numarası: " + str(index),"Transfer Delta: " + str(item["transfers"][0]["delta"])]
TransferKurOranı = ["Index Numarası: " + str(index), "Transfer Kur Oranı: " + str(item["transfers"][0]["quote\_rate"])]
TransferDeltaOranı = ["Index Numarası: " + str(index), "Transfer Delta Oranı: " + str(item["transfers"][0]["delta\_quote"])]

Tablo 76

Tablo 76'da ise İşlemleriAl fonksiyonunda karşılaşılmamış yeni anahtarlar ve veriler ile karşılaşılmaktadır. Bu anahtarlar "transfers" anahtarı içerisinde yer alıp listenin ilk index'inde yani "0" numaranın içerisinde yer almaktadır. Bu anahtarlara ve verilere daha ayrıntılı bakılacak olunursa:

  • TransferBlokİmzalanmaTarihi: Jeton transferinin gerçekleştiği bloğun madenciler tarafından zincire eklenmesi için imzalandığı tarihi belirtmektedir. Bu imzalama gerçekleştiği anda jeton diğer tarafa aktarılmış olmaktadır. Transferlerin 0. İndex'inin içerisinden "block_signed_at" anahtarı ile erişilmektedir.
  • TransferİşlemHashı: Gerçekleşen Jeton transferini ifade eden hash değeridir. Bu değer transferin gerçekleştiği bloğun zincire eklenirken kullandığı hash'i ifade etmektedir. Veri bu Hash içerisinde şifrelenmiştir. Transferlerin 0. İndex'inin içerisinden "tx_hash" anahtarı ile erişilmektedir.
  • TransferGönderilenAdres: Gerçekleşen Jeton transferinin hangi adres tarafından gönderildiğini ifade etmektedir. Jeton bu adres içerisinden çıkarak gitmesi gereken tarafa aktarılır. Transferlerin 0. İndex'inin içerisinden "from_address" anahtarı ile erişilmektedir.
  • TransferAlınanAdres: Gerçekleşen Jeton transferinin hangi adres tarafından teslim alındığını ifade etmektedir. Jeton gönderilen adresten çıkarak bu adrese aktarılmıştır. Transferlerin 0. İndex'inin içerisinden "to_address" anahtarı ile erişilmektedir.
  • TransferKontratıBasamakSayısı: Gerçekleşen Jeton transferinin fiyatlarının kaç basamak içerdiğini ifade etmektedir. Veri okunurken bu sayıya dikkat edilerek okunulmalıdır. Transferlerin 0. İndex'inin içerisinden "contract_decimals" anahtarı ile erişilmektedir.
  • TransferKontratAdı: Gerçekleşen transferin hangi kontrat üzerinden gerçekleştiğini ifade etmektedir. Parametrelerde adres halinde girdi yapılıp sorgulanan bu kontratın ismini çıktı olarak vermekte ve değişkene kaydetmektedir. Transferlerin 0. İndex'inin içerisinden "contract_name" anahtarı ile erişilmektedir.
  • TransferKontratSembolü: Gerçekleşen Transferin üzerinde bulunduğu kontratın sembolünü ifade etmektedir. Transferlerin 0. İndex'inin içerisinden "contract_ticker_symbol" anahtarı ile erişilmektedir.
  • TransferLogoUrl: Gerçekleşen transferin üzerinde bulunduğu kontratın logosunu URL şeklinde çıktı vermektedir. Transferlerin 0. İndex'inin içerisinden "logo_url" anahtarı ile erişilmektedir.
  • TransferTipi: Gerçekleşen Jeton transferinin tipini geliş veya gidiş olarak tanımlayarak ifade etmektedir. Geliş için "IN" çıktısını verirken çıkış için "OUT" çıktısını verir. Transferlerin 0. İndex'inin içerisinden "transfer_type" anahtarı ile erişilmektedir.
  • TransferDelta: Gerçekleşen Jeton transferine bağlı olan fiyat değişiminin ne kadar olacağının öngörüsüdür. Transferlerin 0. İndex'inin içerisinden "delta" anahatarı ile erişilmektedir.
  • TransferKurOranı: Gerçekleşen Jeton transferinin fiyatının seçilen Fiat'ı ifade eden kur ile çevrilmesinin oranını vermektedir. Transferlerin 0. İndex'inin içerisinden "quote_rate" anahatarı ile erişilmektedir.
  • TransferDeltaOranı: Gerçekleşen Jeton transferine bağlı olan delta değişiminin oranını vermektedir. Transferin 0. İndex'inin içerisinden "delta_quote" anahtarı ile erişilmektedir.
  liste.append(TransferBlokİmzalanmaTarihi) liste.append(TransferİşlemHashı) liste.append(TransferGönderilenAdres) liste.append(TransferAlınanAdres) liste.append(TransferKontratıBasamakSayısı) liste.append(TransferKontratAdı) liste.append(TransferKontratSembolü) liste.append(TransferLogoUrl) liste.append(TransferTipi) liste.append(TransferDelta) liste.append(TransferKurOranı) liste.append(TransferDeltaOranı) 

Tablo 77

Tablo 77'de ise uygun başlıklar index numarası ve anahtarlar ile kaydedilen bu değişkenler listeye "append" metodu kullanılarak kaydedilir.

  for i in liste: print(i) 

Tablo 78

Liste kullanıma hazır olmaktadır ancak henüz bu veriler ekrana gösterilmemiştir. Bunu sağlamak için liste içerisindeki tüm elementler Tablo 78'de görüldüğü üzere for döngüsü ile yazdırılmaktadır.

  return liste 

Tablo 79

Tablo 79'da görüldüğü üzere fonksiyonun son satırı olarak liste üzerine kaydedilmiş tüm veriler "return" fonksiyonu ile fonksiyon çıktısı olarak kullanılmak için çıktı verilir. Bu şekilde fonksiyon tamamlanmış hale gelir.

  def ERC20TransferleriniAl(ApiAnahtarı, Zincir\_Numarası,Adres,Fiat,KontrolAdresi): URL = "https://api.covalenthq.com" + "/v1/" + Zincir\_Numarası + "/address/" + Adres + "/transfers\_v2/" +"?contract-address=" + KontrolAdresi +"&quote-currency=" + Fiat + "&key=" + ApiAnahtarı istek = requests.get(URL) verim = (istek.json()) verim = verim["data"] Adresim = verim["address"] SonGüncelleme = verim["updated\_at"] BirSonrakiGüncelleme = verim["next\_update\_at"] ParaBirimi = verim["quote\_currency"] ZincirId = verim["chain\_id"] items = verim["items"] liste = [] liste.append("Adresim: " + Adresim) liste.append("Son Güncelleme: " + SonGüncelleme) liste.append("Bir sonraki Güncelleme: " + BirSonrakiGüncelleme) liste.append("Para Birimi: " + ParaBirimi) liste.append("Zincir Id: " + str(ZincirId)) index = 1 for item in items: BlokİmzalanmaTarihi = ["Index Numarası: " + str(index), "Blok İmzalanma Tarihi: " + item["block\_signed\_at"]] BlokUzunluğu = ["Index Numarası: " + str(index), "Blok Uzunluğu: " + str(item["block\_height"])] İşlemHashı = ["Index Numarası: " + str(index), "İşlem Hash'ı: " + item["tx\_hash"]] İşlemBedeli = ["Index Numarası: " + str(index), "İşlem Bedeli: " + str(item["tx\_offset"])] İşlemBaşarılıMı = ["Index Numarası: " + str(index), "İşlem Başarılı Mı: " + str(item["successful"])] GönderilenAdres = ["Index Numarası: " + str(index), "Gönderilen Adres: " + item["from\_address"]] GönderildiğiAdres = ["Index Numarası: " + str(index), "Gönderildiği Adres: " + item["to\_address"]] Değer = ["Index Numarası: " + str(index), "Değer: " + str(item["value"])] ÖnerilenGas = ["Index Numarası: " + str(index), "Önerilen Gas: " + str(item["gas\_offered"])] HarcananGas = ["Index Numarası: " + str(index), "Harcanan Gas: " + str(item["gas\_spent"])] GazFiyatı = ["Index Numarası: " + str(index), "Gas Fiyatı: " + str(item["gas\_price"])] liste.append(BlokİmzalanmaTarihi) liste.append(BlokUzunluğu) liste.append(İşlemHashı) liste.append(İşlemBedeli) liste.append(İşlemBaşarılıMı) liste.append(GönderilenAdres) liste.append(GönderildiğiAdres) liste.append(Değer) liste.append(ÖnerilenGas) liste.append(HarcananGas) liste.append(GazFiyatı) TransferBlokİmzalanmaTarihi = ["Index Numarası: " + str(index), "Transfer Blok İmzalanma Tarihi: " + str(item["transfers"][0]["block\_signed\_at"])] TransferİşlemHashı = ["Index Numarası: " + str(index), "Transfer İşlem Hash'ı: " + str(item["transfers"][0]["tx\_hash"])] TransferGönderilenAdres = ["Index Numarası: " + str(index), "Transfer Gönderilen Adres: " + str(item["transfers"][0]["from\_address"])] TransferAlınanAdres = ["Index Numarası: " + str(index), "Transfer Alınan Adres: " + str(item["transfers"][0]["to\_address"])] TransferKontratıBasamakSayısı = ["Index Numarası: " + str(index),"Transfer Kontratı Basamak Sayısı: " + str(item["transfers"][0]["contract\_decimals"])] TransferKontratAdı = ["Index Numarası: " + str(index),"Transfer Kontratı Adı: " + str(item["transfers"][0]["contract\_name"])] TransferKontratSembolü = ["Index Numarası: " + str(index),"Transfer Kontrat Sembolü: " + str(item["transfers"][0]["contract\_ticker\_symbol"])] TransferLogoUrl = ["Index Numarası: " + str(index),"Transfer Logo Url: " + str(item["transfers"][0]["logo\_url"])] TransferTipi = ["Index Numarası: " + str(index),"Transfer Tipi: " + str(item["transfers"][0]["transfer\_type"])] TransferDelta = ["Index Numarası: " + str(index),"Transfer Delta: " + str(item["transfers"][0]["delta"])] TransferKurOranı = ["Index Numarası: " + str(index), "Transfer Kur Oranı: " + str(item["transfers"][0]["quote\_rate"])] TransferDeltaOranı = ["Index Numarası: " + str(index), "Transfer Delta Oranı: " + str(item["transfers"][0]["delta\_quote"])] liste.append(TransferBlokİmzalanmaTarihi) liste.append(TransferİşlemHashı) liste.append(TransferGönderilenAdres) liste.append(TransferAlınanAdres) liste.append(TransferKontratıBasamakSayısı) liste.append(TransferKontratAdı) liste.append(TransferKontratSembolü) liste.append(TransferLogoUrl) liste.append(TransferTipi) liste.append(TransferDelta) liste.append(TransferKurOranı) liste.append(TransferDeltaOranı) liste.append("") liste.append("") index += 1 for i in liste: print(i) return liste 

Tablo 80

Tablo 80'de tüm kodlar ifade edilmiştir. Tüm fonksiyonun işlevine bakılırsa fonksiyon girdileri olarak alınan parametreler uygun şekilde birleştirilerek URL yapısı oluşturulur. Oluşturulan bu yapı eklenen kütüphane ile sorgu edilir ve verisi json formatında kaydedilir. Kaydedilen bu veri öncelikle her işlem için ortak parametrelere sahip değişkenlere kaydedilir. Sonrasında ise her bir işlem for döngüsünde uygun index sıralaması ve anahtar erişimi ile listeye eklenir. İndex 1 arttırılıp tüm işlemler bitene kadar bu işlem devam eder. Sonrasında tüm veriler listeye eklenmiş olup kısa bir for döngüsü ile tüm liste ekrana yazdırılmaya hazır hale gelir. Bu işlem de sonuçlandıktan sonra return metodu ile fonksiyon çıktısı olarak liste döndürülerek kullanıma hazır hale gelir.

  Adresim: 0x72b634a6e6a7b5248b529c8927eb61828c6c67c3Son Güncelleme: 2021-08-07T22:42:12.409532588ZBir sonraki Güncelleme: 2021-08-07T22:47:12.409532968ZPara Birimi: TRYZincir Id: 1['Index Numarası: 1', 'Blok İmzalanma Tarihi: 2021-08-07T19:32:09Z']['Index Numarası: 1', 'Blok Uzunluğu: 12979870']['Index Numarası: 1', "İşlem Hash'ı: 0xeaa8f0774deed2dde1d19a2ec12176c5f46b1c176102c9a594438aa15e4bac26"]['Index Numarası: 1', 'İşlem Bedeli: 266']['Index Numarası: 1', 'İşlem Başarılı Mı: True']['Index Numarası: 1', 'Gönderilen Adres: 0x72b634a6e6a7b5248b529c8927eb61828c6c67c3']['Index Numarası: 1', 'Gönderildiği Adres: 0x7a250d5630b4cf539739df2c5dacb4c659f2488d']['Index Numarası: 1', 'Değer: 0']['Index Numarası: 1', 'Önerilen Gas: 199498']['Index Numarası: 1', 'Harcanan Gas: 158204']['Index Numarası: 1', 'Gas Fiyatı: 49500000000']['Index Numarası: 1', 'Transfer Blok İmzalanma Tarihi: 2021-08-07T19:32:09Z']['Index Numarası: 1', "Transfer İşlem Hash'ı: 0xeaa8f0774deed2dde1d19a2ec12176c5f46b1c176102c9a594438aa15e4bac26"]['Index Numarası: 1', 'Transfer Gönderilen Adres: 0x72b634a6e6a7b5248b529c8927eb61828c6c67c3']['Index Numarası: 1', 'Transfer Alınan Adres: 0xb4a0a46d3042a739ec76fd67a3f1b99cc12ac1d9']['Index Numarası: 1', 'Transfer Kontratı Basamak Sayısı: 18']['Index Numarası: 1', 'Transfer Kontratı Adı: ERC20']['Index Numarası: 1', 'Transfer Kontrat Sembolü: ERC20']['Index Numarası: 1', 'Transfer Logo Url: https://logos.covalenthq.com/tokens/0xc3761eb917cd790b30dad99f6cc5b4ff93c4f9ea.png']['Index Numarası: 1', 'Transfer Tipi: OUT']['Index Numarası: 1', 'Transfer Delta: 96000000000000000000000']['Index Numarası: 1', 'Transfer Kur Oranı: 0.18630312383174896']['Index Numarası: 1', 'Transfer Delta Oranı: 17885.0998878479']………['Index Numarası: 6', 'Blok İmzalanma Tarihi: 2021-08-07T01:33:12Z']['Index Numarası: 6', 'Blok Uzunluğu: 12974973']['Index Numarası: 6', "İşlem Hash'ı: 0xb048f73d2f912bc392c3df995e4869f2c456504e2b395c36d4ab1c187eade707"]['Index Numarası: 6', 'İşlem Bedeli: 322']['Index Numarası: 6', 'İşlem Başarılı Mı: True']['Index Numarası: 6', 'Gönderilen Adres: 0x72b634a6e6a7b5248b529c8927eb61828c6c67c3']['Index Numarası: 6', 'Gönderildiği Adres: 0x7a250d5630b4cf539739df2c5dacb4c659f2488d']['Index Numarası: 6', 'Değer: 0']['Index Numarası: 6', 'Önerilen Gas: 220957']['Index Numarası: 6', 'Harcanan Gas: 171007']['Index Numarası: 6', 'Gas Fiyatı: 42900000000']['Index Numarası: 6', 'Transfer Blok İmzalanma Tarihi: 2021-08-07T01:33:12Z']['Index Numarası: 6', "Transfer İşlem Hash'ı: 0xb048f73d2f912bc392c3df995e4869f2c456504e2b395c36d4ab1c187eade707"]['Index Numarası: 6', 'Transfer Gönderilen Adres: 0x72b634a6e6a7b5248b529c8927eb61828c6c67c3']['Index Numarası: 6', 'Transfer Alınan Adres: 0xb4a0a46d3042a739ec76fd67a3f1b99cc12ac1d9']['Index Numarası: 6', 'Transfer Kontratı Basamak Sayısı: 18']['Index Numarası: 6', 'Transfer Kontratı Adı: ERC20']['Index Numarası: 6', 'Transfer Kontrat Sembolü: ERC20']['Index Numarası: 6', 'Transfer Logo Url: https://logos.covalenthq.com/tokens/0xc3761eb917cd790b30dad99f6cc5b4ff93c4f9ea.png']['Index Numarası: 6', 'Transfer Tipi: OUT']['Index Numarası: 6', 'Transfer Delta: 300076322827365768252694']['Index Numarası: 6', 'Transfer Kur Oranı: 0.18630312383174896']['Index Numarası: 6', 'Transfer Delta Oranı: 55905.1563306826'] 

Tablo 81

Tablo 81'de örnek bir çıktı verilmiştir.